/*
 * CudaAESFast.h
 *
 *  Created on: Mar 11, 2010
 *      Author: lukasz
 */

#ifndef CUDAAESFAST_H_
#define CUDAAESFAST_H_
#include "aesUtils.h"
#include "cudaUtils.h"
#include "BigInteger.h"

void aesFastCipherInit();

void aesEncryptBlock2(byte* in, uint32_t* eKey, const NB nb, const NB nk);

void aesEncryptBlocks(byte* d_in, byte* d_out, uint32_t* d_key, const NB nb, const NB nk, int blocks);

void aesEncryptBlocks2(byte* d_in, uint32_t* d_key, const NB nb, const NB nk, int blocks);
void aesEncryptIVBlocks(byte* data,
					  byte* dev_data_out,
					  byte* host_data_out,
					  uint32_t size,
					  uint32_t* d_key,
					  byte* ivb);

void aesEncryptIVBlocksBig(byte* data,
					  byte* dev_data_out,
					  byte* host_data_out,
					  uint32_t size,
					  uint32_t* d_key,
					  BigInteger& ivc);


#endif /* CUDAAESFAST_H_ */
